Many modern computer systems, often comprising large numbers of individual computing devices, operate in connection with large amounts of data. For example, organizations that offer goods, services, and other items over the Internet often include systems that interact with thousands or millions of computing devices when providing information about items, taking orders, advertising and performing other activities. These interactions result in data useful for various purposes, including fulfilling orders, accounting, record keeping and performing analysis for various purposes, such as for improving the way items are offered for consumption and detecting errors that need to be corrected.
In addition to operating in connection with large amounts of data, modern computer systems (referred to as production systems) are often quite complex. An organization's infrastructure may comprise multiple subsystems, each of which performs a different role in the organization's activities. For example, an organization may have one subsystem for order processing, another for payment processing, another for inventory tracking, another for information publishing (e.g., through a website or other interface), another for record keeping, another for analysis, and others. Each of these subsystems may itself be quite complex. Further, because of the way different subsystems interact, changes to one (e.g., code updates) can have adverse, even disastrous, effects if not done properly.